package com.example.system.utils;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

/**
 * 加密算法⼯具类
 */
public class BCryptUtils {
    /**
     * ⽣成加密后密⽂
     *
     * @param password 密码
     * @return 加密字符串
     */
    public static String encryptPassword(String password) {
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        return passwordEncoder.encode(password);
    }
    /**
     * 判断密码是否相同，根据数据库的加密数据先提取出当时加密的盐值，再用用户输入的密码和提取的盐值进行加密后和存储的密码进行比较
     *
     * @param rawPassword 真实密码
     * @param encodedPassword 加密后密⽂
     * @return 结果
     */
    public static boolean matchesPassword(String rawPassword, String
            encodedPassword) {
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        return passwordEncoder.matches(rawPassword, encodedPassword);
    }

    public static void main(String[] args) {
        System.out.println(BCryptUtils.encryptPassword("admin123"));
        System.out.println(BCryptUtils.matchesPassword("admin123", "$2a$10$8yuVB43e0FdLqkX92TUwuuccrb/tscJl4srEGeTg46Vq8VOsL3T32"));
    }
}

